import 'reflect-metadata';

export {
  Newable,
  LazyServiceIdentifier,
  ServiceIdentifier,
} from '@inversifyjs/common';
export {
  Bind,
  BindInFluentSyntax,
  BindingIdentifier,
  BindInWhenOnFluentSyntax,
  BindOnFluentSyntax,
  BindToFluentSyntax,
  BindWhenFluentSyntax,
  BindWhenOnFluentSyntax,
  BoundServiceSyntax,
  Container,
  ContainerModule,
  ContainerModuleLoadOptions,
  ContainerOptions,
  IsBound,
  IsBoundOptions,
  OnActivation,
  OnDeactivation,
  Rebind,
  RebindSync,
  ResolvedValueInjectOptions,
  ResolvedValueMetadataInjectOptions,
  ResolvedValueMetadataInjectTagOptions,
  Unbind,
  UnbindSync,
} from '@inversifyjs/container';
export {
  BindingActivation,
  BindingConstraints,
  BindingDeactivation,
  BindingScope,
  DynamicValueBuilder,
  Factory,
  GetAllOptions,
  GetOptions,
  GetOptionsTagConstraint,
  InjectFromBaseOptions,
  InjectFromBaseOptionsLifecycle,
  InjectFromHierarchyOptions,
  InjectFromHierarchyOptionsLifecycle,
  MetadataName,
  MetadataTag,
  MultiInjectOptions,
  OptionalGetOptions,
  // eslint-disable-next-line @typescript-eslint/no-deprecated
  Provider,
  ResolutionContext,
  bindingScopeValues,
  bindingTypeValues,
  decorate,
  inject,
  injectFromBase,
  injectFromHierarchy,
  injectable,
  multiInject,
  named,
  optional,
  unmanaged,
  tagged,
  postConstruct,
  preDestroy,
} from '@inversifyjs/core';
